package com.anivia.common.core.enums;


import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

/**
 * 公共响应状态码
 *
 * @author wangj
 */
@AllArgsConstructor
@NoArgsConstructor
@Getter
public enum CommonResponseEnum implements BaseEnum {
    /**
     * 成功
     */
    SUCCESS(1, "成功"),
    /**
     * 失败
     */
    FAILED(0, "失败"),
    /**
     * 系统异常
     */
    SYSTEM_ERROR(-1, "系统异常"),
    /**
     * 服务调用异常
     */
    FEIGN_FAILED(100001, "服务调用异常"),
    /**
     * 空指针异常
     */
    NP_EXCEPTION(100002, "空指针异常"),
    /**
     * 类型转换异常
     */
    CLASS_CAST_EXCEPTION(100003, "类型转换异常"),
    /**
     * 不支持http请求方法:{}
     */
    HTTP_METHOD_NOT_SUPPORT(100004, "不支持http请求方法:{}"),
    /**
     * 请求参数异常
     */
    ILLEGAL_ARGUMENT(100005, "请求参数异常"),
    /**
     * 请求参数json格式错误
     */
    ILLEGAL_ARGUMENT_JSON(100006, "请求参数json格式错误"),
    /**
     * 要操作的数据不能为空
     */
    DATA_NOT_NULL(100007, "要操作的数据不能为空"),
    /**
     * 请求参数类型不正确
     */
    ILLEGAL_TYER_ERROR(100008, "参数类型不匹配：{}"),
    ;

    private Integer code;
    private String desc;

    public String toString() {
        return name() + "-" + getDesc();
    }

    public static CommonResponseEnum getByCode(Integer code) {
        for (CommonResponseEnum item : values()) {
            if (item.code.equals(code)) {
                return item;
            }
        }
        return null;
    }
}
